package br.com.wepa.webapps.orca.controle.actions.produto;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import br.com.wepa.webapps.logger.TraceLogger;
import br.com.wepa.webapps.orca.controle.actions.struts.GenericAction;
import br.com.wepa.webapps.orca.logica.negocio.facade.EspecificacaoProdutoFacadeHome;
import br.com.wepa.webapps.orca.logica.negocio.facade.FacadeDelegator;
import br.com.wepa.webapps.orca.logica.negocio.facade.basic.GenericFacadeHome;
import br.com.wepa.webapps.orca.logica.negocio.facade.basic.GenericTO;
import br.com.wepa.webapps.orca.logica.negocio.facade.to.EspecificacaoProdutoTO;

public class ProdutoAction extends GenericAction {

	public static final String FORM_IDGRUPO = "idGrupo";
	public static final String FORWARD_GO_LISTARSUBGRUPOS = "goListar";
	public static final String FORWARD_PAGE_PESQUISARPRECO = "pesquisarPreco";
	public static final String FORWARD_GO_PREQUISARPRECO= "goPesquisarPreco";

	
	/**
	 * Objeto de Log
	 */
	private static TraceLogger logger = new TraceLogger(ProdutoAction.class);

	private EspecificacaoProdutoFacadeHome facade = null;
	
	public ProdutoAction() {

	}

	@Override
	protected GenericFacadeHome getFacade() {
		return facade();
	}	
	
	private EspecificacaoProdutoFacadeHome facade() {
		if(facade == null){
			facade =  FacadeDelegator.getEspecificacaoProdutoFacade();
		}
		return facade;
	}


	@SuppressWarnings("unchecked")
	public ActionForward goPesquisarPreco(ActionMapping mapping,
			ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		logger.entering();
		EspecificacaoProdutoTO to =  (EspecificacaoProdutoTO) getGenericTansferObjectInRequest(request);
		super.copyFormToObject(to, form);
		to.setUpdate(false);		
		to = facade().goPesquisarPreco(to);

		super.clearAndSetTansferObject(request, to, false);		
		
		logger.exiting();
		return mapping.findForward(FORWARD_PAGE_PESQUISARPRECO);
	}
	
	@SuppressWarnings("unchecked")
	public ActionForward pesquisarPreco(ActionMapping mapping,
			ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		logger.entering();		
		EspecificacaoProdutoTO to =  (EspecificacaoProdutoTO) getGenericTansferObjectInRequest(request);
		super.copyFormToObject(to, form);
		to.setPagingBean(super.configPaging(request, form, mapping));		
		
		to = facade().pesquisarPreco(to);
	
		super.clearAndSetTansferObject(request, to, false);
		super.pushActionEvent(request, form,mapping);

		logger.exiting();
		return goPesquisarPreco(mapping, form, request, response);
	}
	
	@SuppressWarnings("unchecked")
	public ActionForward listaSubGrupos(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		logger.entering();		
		EspecificacaoProdutoTO to =  (EspecificacaoProdutoTO) getGenericTansferObjectInRequest(request);
		
		EspecificacaoProdutoFacadeHome facade =  FacadeDelegator.getEspecificacaoProdutoFacade();
		
		super.copyFormToObject(to, form);
				
		to = facade.listaSubGrupos(to);

		GenericTO updateTO = (GenericTO) super.getTansferObjectInSession(request);
		
		if(updateTO != null){
			to.setUpdate(updateTO.getUpdate());
		}
		
		super.clearAndSetTansferObject(request, to, false);		
		super.copyObjectToForm(form, to);
		return mapping.findForward(FORWARD_PAGE_CADASTRO);
	}
	

}